package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * @author Luka
 * @date 2021/05/27 15:12
 *
 * jdk8之后推出的一个新特性:lambda表达式
 * lambda表达式可以用更精简的语言创建匿名内部类
 * 语法:
 * (参数列表)->{
 *     方法体
 * }
 * 注意:lambda表达式创建的匿名内部类实现的接口中只能有一个抽象方法,否则无法使用
 *
 **/
public class LambdaDemo {
    FileFilter filter = new FileFilter() {
        @Override

        public boolean accept(File file) {
            return file.getName().contains("t");
        }
    };

    //lambda表达式写法
    FileFilter filter1 = (File file)->{
        return file.getName().contains("t");
    };

    //lambda表达式中参数列表类型可以不写
    FileFilter filter2 = (f)->{
        return f.getName().contains("t");
    };

    //如果只有一个参数,参数列表的()也可以不写
    FileFilter filter3 = f->{
        return f.getName().contains("t");
    };

    //如果方法体中只有一句代码,{}可以不写,这句代码要是有return也不能写
    FileFilter filter4 = f->f.getName().contains("t");

    File dir = new File(".");
    File[] subs = dir.listFiles(f->f.getName().contains("t"));

}